package com.imooc;

import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.web.cors.CorsConfiguration;
import org.springframework.web.cors.UrlBasedCorsConfigurationSource;
import org.springframework.web.filter.CorsFilter;

@Configuration
public class CorsConfig {


    /**
     * 创建一个 CorsFilter 拦截器  ===> 针对跨域请求的拦截器
     * @return
     */
    @Bean
    public CorsFilter corsFilter(){
        /*
        * 1. 添加cors配置信息
        * */
        CorsConfiguration config = new CorsConfiguration();
        config.addAllowedOrigin("http://localhost:8080");  // 添加允许的跨域信息的内容 （相当于添加一个调用端）
        config.addAllowedHeader("http://www.mtv.com");
        config.addAllowedHeader("http://www.music.com");
        config.addAllowedHeader("http://www.mtv.com:8080");
        config.addAllowedHeader("http://www.music.com:8080");
        config.addAllowedOrigin("*");
        config.setAllowCredentials(true);  // 设置是否发送cookie信息  前端也有设置是否要携带cookie
        // 设置允许请求的方式 ： 像 get post 等等
        config.addAllowedMethod("*");
        // 设置允许的header
        config.addAllowedHeader("*");

        // 进行路径的映射
        /*
        * 2. 为url添加映射路径
        * 这边是 针对所有的路径，都可以去使用上诉设置的基本信息，因此使用 *
        * */
        UrlBasedCorsConfigurationSource corsSource = new UrlBasedCorsConfigurationSource();
        corsSource.registerCorsConfiguration("/**",config);

        /*
        * 3.返回 重新定义好的 corsSource
        * */
        return new CorsFilter(corsSource);

    }
}
